昨天,我們的 ChatBot 已經能跟我們互動、回應粉絲的問題。
不過實測卻發現,它的記憶力有限,上一秒才剛聊過它下一秒就忘了。
探險者:這兩處(ie.國家公園)主要的差異是?
ChatBot 卻回應完全不相干的猴廟及杜巴廣場...
今天,我們要讓 ChatBot 從被動回覆進化為主動互動,向智慧助手邁進。讓它更聰明、更實用、更懂得看眼色——不只是答題,更能記住聊天的紀錄、洞察字裡行間的情緒,避免它變成小白目一個。
今天的冒險挑戰
透過 conversation_history 、emotion_log 為它加上記憶功能,記錄每輪使用者的問題與 ChatBot 的回覆,讓 ChatBot 能基於上下文調整回覆,對話更自然,也方便後續個性化優化。
將原本正/中/負加上更精細的情緒粒度,進化成:興奮、滿意、中立、失望、生氣。使用對多語系、長文本更友好的 nlptown/bert-base-multilingual-uncased-sentiment 模型,洞察使用者心情
小技巧:情緒分析環節容易爆token,不小心就超過模型上限,可以透過 長文本切段 或限制 pipeline 的最大 token 來解。
emotion_analyzer = pipeline(
"sentiment-analysis",
model="nlptown/bert-base-multilingual-uncased-sentiment",
truncation=True, # 自動截斷超過模型最大 token 的文本
max_length=512, # 指定最大 token 長度
)
def analyze_emotion(text):
"""分析文字情緒,回傳標籤與信心值"""
result = emotion_analyzer(text[:2000])[0] # 避免極長文本,截取前2000字
return result['label'], result['score']
每次對話 ChatBot 都會記錄使用者心情,計算累計的情緒趨勢並視覺化,並提供信心值作為判斷準則參考。
🧠 回覆情緒:4 stars(信心值 0.335)
📊 當前情緒趨勢: {'5 stars': 5, '4 stars': 8}
成果呈現
探險者詢問:剛聊到哪呢?
ChatBot 可以馬上承接話題:
我們上次主要聊到了兩個尼泊爾非常值得一訪的景點,都建議您可以列入「必訪清單」
將情緒紀錄畫成折線圖,觀察使用者互動情緒變化。
今天解鎖的新技能:
🍄 多輪對話記憶:理解上下文,對話更自然。
🍄 情緒細分類與趨勢觀察:分析使用者心情,生成折線圖。
📓 小結:
我們今天讓 ChatBot 能夠記住對話歷史、理解情緒、承接上下文,從單純的「回答問題」進化成初步的「智慧互動助手」。不過,它現在仍侷限在內部測試環境,還沒真正面對外部使用者。
下一步,我們的挑戰是:把 ChatBot 帶到對外聊天介面,讓粉絲可以透過熟悉的平台直接互動,與 ChatBot 即時對話、提問、獲得建議,真正體驗「互動式資料夥伴」的魔法。